/*
 * @description: 功能
 * @author: Yoke
 * @Date: 2024-08-28 23:34:45
 */
import axios, {
    AxiosError,
    AxiosInstance,
    AxiosResponse,
    InternalAxiosRequestConfig
} from "axios"

// 定义基本返回数据类型
export interface ApiResponse<T> {
    code: number
    data: T
    msg: string
}

// 创建 Axios 实例
const axiosInstance: AxiosInstance = axios.create({
    baseURL: import.meta.env.VITE_APP_BASE_API as string, // 基地址
    timeout: 5000, // 设置超时时间为 5 秒
})

// 请求拦截器
axiosInstance.interceptors.request.use(
    (config: InternalAxiosRequestConfig<any>) => {
        return config;
    },

    (error: AxiosError) => {
        // 对请求错误做些什么
        return Promise.reject(error)
    }
)

// 响应拦截器
axiosInstance.interceptors.response.use(
    (response: AxiosResponse) => {
        // ...
        return response.data
    },
    (error: AxiosError) => {
        // 对响应错误做些什么
        return Promise.reject(error)
    }
)
export default axiosInstance
